package com.xebest.web.service;

import com.xebest.web.form.XeVenPurchForm;
import com.xebest.web.view.XeVenPurchProductView;
import com.xebest.web.view.XeVenPurchView;
import com.xebest.web.view.XeVenSumPurchView;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @desc: 采购相关业务接口
 * @author: 李书峰
 * @createTime: 2017年6月21日 下午3:14:32
 * @history:
 * @version: v1.0
 */
public interface XeVenPurchService {

    /**
     * 新增/编辑/删除采购单（删除为假删）
     *
     * @param xeVenPurchForm
     * @return int
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:39:08
     * @history:
     */
    int insertPurchOrder(XeVenPurchForm xeVenPurchForm) throws Exception;

    /**
     * 新增/编辑/删除采购单（删除为假删）
     *
     * @param xeVenPurchForm
     * @return int
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:39:08
     * @history:
     */
    int updatePurchOrder(XeVenPurchForm xeVenPurchForm) throws Exception;

    /**
     * 新增/编辑/删除采购单（删除为假删）
     *
     * @param xeVenPurchForm
     * @return int
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:39:08
     * @history:
     */
    Map<String, Object> deletePurchOrder(List<XeVenPurchForm> xeVenPurchFormList) throws Exception;

    /**
     * 采购审核采购单
     *
     * @param xeVenPurchForm
     * @return Map<String   ,   Object>
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:42:48
     * @history:
     */
    Map<String, Object> purchCheck(List<XeVenPurchForm> xeVenPurchFormList) throws Exception;

    /**
     * 财务审核采购单
     *
     * @param xeVenPurchForm
     * @return Map<String   ,   Object>
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:42:48
     * @history:
     */
    Map<String, Object> financeCheck(List<XeVenPurchForm> xeVenPurchFormList) throws Exception;

    /**
     * 确认完成采购单
     *
     * @param xeVenPurchForm
     * @return int
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:42:48
     * @history:
     */
    int finishPurchOrder(XeVenPurchForm xeVenPurchForm) throws Exception;

    /**
     * 确认非集采采购单是否发货
     *
     * @param xeVenPurchForm
     * @return XeVenPurchForm
     * @author: 李书峰
     * @createTime: 2018年3月2日 下午4:45:16
     * @history:
     */
    XeVenPurchForm sendGoodsIsFinish(XeVenPurchForm xeVenPurchForm);

    /**
     * 查询采购单列表
     *
     * @param xeVenPurchForm
     * @return List<XeVenPurchView>
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:29:24
     * @history:
     */
    List<XeVenPurchView> queryPurchList(XeVenPurchForm xeVenPurchForm);

    /**
     * 查询采购单详情
     *
     * @param xeVenPurchForm
     * @return XeVenPurchView
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:33:33
     * @history:
     */
    XeVenPurchView queryPurchDetail(XeVenPurchForm xeVenPurchForm);

    /**
     * 查询采购单商品
     *
     * @param xeVenPurchForm
     * @return List<>
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:44:18
     * @history:
     */
    List<XeVenPurchProductView> queryPurchProducts(XeVenPurchForm xeVenPurchForm);

    /**
     * 查询采购入库单详情
     *
     * @param xeVenPurchForm
     * @return List<>
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:44:18
     * @history:
     */
    Map<String, Object> queryReceiptDetail(XeVenPurchForm xeVenPurchForm);

    /**
     * 确认收货入库
     *
     * @param xeVenPurchForm
     * @return int
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:42:48
     * @history:
     */
    int updateGoodsReceipt(XeVenPurchForm xeVenPurchForm) throws Exception;


    /**
     * 更新采购单状态为已完成
     *
     * @param xeVenPurchForm
     * @return
     * @throws Exception int
     * @author: 杜春静
     * @createTime: 2017年8月28日 上午10:11:07
     * @history:
     */

    int updatePurchOrderToFinish(XeVenPurchForm xeVenPurchForm)
            throws Exception;

    /**
     * @param map
     * @return Map<String   ,   Object>
     * @author: 李书峰
     * @createTime: 2017年9月14日 下午4:03:21
     * @history:
     */
    public BigDecimal queryWaitDealPurchOrderNum(Map<String, Object> map);

    /**
     * @param map
     * @return Map<String   ,   Object>
     * @author: 李书峰
     * @createTime: 2017年9月14日 下午4:03:21
     * @history:
     */
    public BigDecimal queryMonthPurchAmount(Map<String, Object> map);


    /**
     * 鲜咨达审核采购单
     *
     * @param xeVenPurchForm
     * @return Map<String   ,   Object>
     * @author: 李书峰
     * @createTime: 2017年6月21日 下午3:42:48
     * @history:
     */
    Map<String, Object> xianCheck(List<XeVenPurchForm> xeVenPurchFormList) throws Exception;

    /**
     * 查询订单汇总采购页面采购单
     *
     * @param form
     * @return
     * @author RCZ
     */
    List<XeVenSumPurchView> querySummaryPurch(XeVenPurchForm form);

    /**
     * @Description: 鲜易云管理平台采购单管理-----查询采购单列表
     * @author: 袁世林
     * @createTime: 2018年6月19日 下午2:23:37
     * @param: form
     * @return: List<XeVenPurchView>
     */
    List<XeVenPurchView> queryPurchListRestApi(XeVenPurchForm form);

    /**
     * @Description: 鲜易云管理平台采购单管理-----查询采购单详情
     * @author: 袁世林
     * @createTime: 2018年6月19日 下午6:50:35
     * @param: xeVenPurchForm
     * @return: XeVenPurchView
     */
    XeVenPurchView queryPurchDetailRestApi(XeVenPurchForm xeVenPurchForm);

    /**
     * @Description: 导出采购单详情列表
     * @author: 袁世林
     * @createTime: 2018年6月24日 下午4:59:01
     * @param: form
     * @return: List<XeVenPurchView>
     */
    List<XeVenPurchView> exportPurchDetail(XeVenPurchForm form);

    /**
     * 采购订单中某商品被占用数量
     *
     * @param spu 商品的spu
     * @return spu在采购单中呗占用的采购单数
     * @author zhouys
     */
    int spuTakeUpCount(String spu);

	int cancelFinanceCheck(XeVenPurchForm form)  throws Exception;
}
  
